class Queue {
constructor() {
this.items = [];
}
// 入队
enqueue(element) {
this.items.push(element);
}
// 出队
dequeue() {
if (this.isEmpty()) {
return "队列为空";
}
return this.items.shift();
}
// 查看队首元素
front() {
if (this.isEmpty()) {
return "队列为空";
}
return this.items[0];
}
// 检查队列是否为空
isEmpty() {
return this.items.length === 0;
}
// 获取队列大小
size() {
return this.items.length;
}
// 打印队列内容
print() {
console.log(this.items.toString());
}
}
class Stack {
constructor() {
this.items = [];
}
// 入栈
push(element) {
this.items.push(element);
}
// 出栈
pop() {
if (this.isEmpty()) {
return "栈为空";
}
return this.items.pop();
}
// 查看栈顶元素
peek() {
if (this.isEmpty()) {
return "栈为空";
}
return this.items[this.items.length - 1];
}
// 检查栈是否为空
isEmpty() {
return this.items.length === 0;
}
// 获取栈大小
size() {
return this.items.length;
}
// 打印栈内容
print() {
console.log(this.items.toString());
}
}
// 使用栈反转队列的函数
function reverseQueue(queue) {
const stack = new Stack();
// 第一步:将队列中所有元素转移到栈中
while (!queue.isEmpty()) {
stack.push(queue.dequeue());
}
// 第二步:将栈中所有元素转移回队列
while (!stack.isEmpty()) {
queue.enqueue(stack.pop());
}
return queue;
}
// 测试代码
const queue = new Queue();
queue.enqueue(1);
queue.enqueue(2);
queue.enqueue(3);
queue.enqueue(4);
queue.enqueue(5);
console.log("原始队列:");
queue.print(); // 输出: 1,2,3,4,5
const reversedQueue = reverseQueue(queue);
console.log("反转后的队列:");
reversedQueue.print(); // 输出: 5,4,3,2,1